// worker.js
/**
 * // 旧版worker.js
 * import { unpackFrame, unpackEB9A } from "./secondary.js";
 *
 * // 监听主线程的消息
 * self.onmessage = function (e) {
 *     const buffer = e.data;
 *     console.log(buffer)
 *     const frames = unpackFrame(buffer);
 *     const result = frames.map(f => unpackEB9A(f)).map(subArray =>
 *         subArray.reduce((acc, item) => {
 *             acc[item.label] = item.value;
 *             return acc;
 *         }, {})
 *     );
 *     // 将处理结果发送回主线程
 *     self.postMessage(result);
 * }
 */
/** new3新版
 *
 *
 */
import {unpackEB9A} from "./secondary.js";

// 监听主线程的消息
self.onmessage = function (e) {
    const {chunk, frames} = e.data; // 获取数据块(ArrayBuffer)和帧数
    // console.log("接收数据块:", chunk.byteLength, "处理帧:", frames);
    console.time("handle")
    // **1. 重新分割 chunk 为单个帧**
    const results = [];
    for (let i = 0; i < frames; i++) {
        results[i] = unpackEB9A(chunk.slice(i * 256, (i + 1) * 256))
            .reduce((acc, item) => {
                acc[item.label] = item.value;
                return acc;
            }, {});
    }

    console.timeEnd("handle")

    self.postMessage(results);
};

// import {unpackFrameParser} from "./secondary.js";
//
// // 监听主线程的消息
// self.onmessage = function (e) {
//     const {chunk, frames} = e.data; // 获取数据块和帧数
//     console.log("接收数据块:", chunk.byteLength, "处理帧:");
//
//     // 解析数据块，限制处理的帧数
//     const allFrames = unpackFrameParser(chunk).slice(0, frames);
//
//     // 对每个帧进行 unpack 处理
//     // 扁平化数据，减少对象创建开销
//     const result = allFrames.map(subArray =>
//         subArray.reduce((acc, {label, value}) => {
//             acc[label] = value;
//             return acc;
//         }, Object.create(null))
//     );
//
//     // 发送处理后的数据回主线程
//     self.postMessage(result);
// };
